import pinyin from 'pinyin'

export function setUnique(tempName, existList, vModel) {
  // 当前表单中，该组件的键值不能变
  if (vModel && vModel.unique) {
    return tempName;
  }
  
  // 不能重复
  let temp = tempName;
  const base = temp
  let tag = 1
  while(existList.includes(temp)) {
    temp = base + '_' + tag
    tag++
  }
  return temp;
}

export function label2PinYin(label, existList) {
  
  // 为空的情况
  const val = (label + '')?.trim()
  if(!val) return

  let temp = pinyin(val, {style: 0}).map(item => item[0]).join('_');

  // 去掉特殊符号，需要是合法的变量名
  temp = temp.replace(/[^a-zA-Z0-9_]/g, '')
  // 去掉开头的数字
  temp = temp.replace(/^[0-9]+/g, '')
  // 去掉之后为空，则赋默认值
  if(!temp) {
    temp = 'field_1'
  }

  return setUnique(temp, existList);
}
